#include "toptable.h"
#include <QFileDialog>
#include <QDomDocument>
#include <QStandardItemModel>
#include <QMessageBox>
#include <QDebug>

topTable::topTable(QWidget *parent) :
    QTreeView(parent)
{
    _initValue();
    _initTopTable();
}

//********************************************************************************
//函数名：_initTopTable
//功能：初始化列头
void topTable::_initTopTable()
{
    // 设置7段列标：1方向，2序号，3方向，4时间，5源码
    //    lineNum=0;

    model->setColumnCount(5);
    model->setHeaderData(CO_DERICTION1_C,Qt::Horizontal,tr("1方向"));
    model->setHeaderData(CO_NUM_C,Qt::Horizontal,tr("2序号"));
    model->setHeaderData(CO_DERICTION2_C,Qt::Horizontal,tr("3方向"));
    model->setHeaderData(CO_TIME_C,Qt::Horizontal,tr("4时间"));
    model->setHeaderData(CO_CODE_C,Qt::Horizontal,tr("5源码"));

}

//********************************************************************************
//函数名：_initValue
//功能：所有变量都要拿出来初始化
void topTable::_initValue()
{
    lineNum=0;
    model=new QStandardItemModel();//->数据模型
    domDocument=new QDomDocument();//->dom对象
}

//********************************************************************************
//->函数名：bool brieftable::read(QIODevice *device)
//->功能：读取xml文件
bool topTable::read(QIODevice *device)
{
    QString errorStr;
    int errorLine;
    int errorColumn;


    if(!domDocument->setContent(device,true,&errorStr,&errorLine,
                               &errorColumn)){
        QMessageBox::information(window(),tr("104解析"),
                                 tr("Parse error at line %1, column %2:\n%3")
                                 .arg(errorLine)
                                 .arg(errorColumn)
                                 .arg(errorStr));
        return false;
    }
    //获取根节点
    QDomElement root=domDocument->documentElement();
    if(root.tagName()=="Root"){
        QMessageBox::information(window(),tr("你已经读到.log文件"),
                                 tr("提示：你已经读到了.log文件"));
    }

    QDomElement child =root.firstChildElement("Record");
    _parseRecordElement(child);

    while(!child.isNull()){
       _parseRecordElement(child);
        child=child.nextSiblingElement("Record");
    }

    return true;
}



//********************************************************************************
//函数名：void parseReordElement(const QDomElement &element,
//功能：解析每个文件夹元素

void topTable::_parseRecordElement(const QDomElement &element)
{
    //添加方向0 2
    QString deriction_C=element.firstChildElement("Deriction").text();
    if(deriction_C=="Receive"){
        model->setItem(lineNum,CO_DERICTION1_C,new QStandardItem("-->R"));
    }else
        model->setItem(lineNum,CO_DERICTION1_C,new QStandardItem("<--S"));

    model->setItem(lineNum,CO_DERICTION2_C,new QStandardItem(deriction_C));

    //添加时间5
    QString time_C=element.firstChildElement("Time").text();
    model->setItem(lineNum,CO_TIME_C,new QStandardItem(time_C));

    //添加源码6
    QString data_C=element.firstChildElement("Data").text();
    model->setItem(lineNum,CO_CODE_C,new QStandardItem(data_C));

    //添加序号1
    model->setItem(lineNum,CO_NUM_C,new QStandardItem(tr("%1").arg(lineNum)));
    ++lineNum;
}
